#include <mysql/mysql.h>
#include <iostream>
using namespace std;



int main()
{
    //建立连接
    MYSQL* conn=mysql_init(NULL);
    if(!conn)
    {
        cout<<"init fail!"<<endl;
        return -1;
    }
    if(!mysql_real_connect(conn,"127.0.0.1","root","root","school",3306,nullptr,0))
    {
        cout<<"connection fail!"<<endl;
        return -1;
    }
    else
    {
        cout<<"connection ok!"<<endl;
    }

    //mysql连接成功后默认是编码是Latin，因此要设置编码格式为UTF8，否则插入的数据会乱码。
    mysql_set_character_set(conn,"utf8");

    //创建表
    //decimal(精度，小数位数)
    //符合条件的小数为(精度-小数位数，小数位数)
    //例如 6666.00符合decimal(6,2)
    string s="select * from emp";
    if(mysql_query(conn,s.c_str())!=0)
    {
        cout<<"query: "<<s<<" fail!"<<endl;
        return 2;
    }
    cout<<"query: "<<s<<" ok!"<<endl;
    
    //查询
    //创建查询结果空间
    MYSQL_RES* res=mysql_store_result(conn);
    //返回结果的行列数
    int columns=mysql_num_fields(res);
    int rows=mysql_num_rows(res);
    cout<<"行："<<rows<<" "<<"列："<<columns<<endl;
    //返回列名
    MYSQL_FIELD* field=mysql_fetch_field(res);
    for(int i=0;i<columns;i++)
    {
        cout<<field[i].name<<" ";
    }
    cout<<endl;
    //返回结果
    MYSQL_ROW content;
    for(int i=0;i<rows;i++)
    {
        content=mysql_fetch_row(res);
        for(int j=0;j<columns;j++)
        {
            cout<<content[j]<<" ";
        }
        cout<<endl;
    }
    //释放查询结果空间
    mysql_free_result(res);
    
    //关闭连接
    mysql_close(conn);
    return 0;
}